home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / xmath.h < prev   
C/C++ Source or Header  |  1999-03-06  |  3KB  |  89 lines

  1. /*  xmath.h
  2.  
  3.   extended math library  belonging to OptiVec.
  4.  
  5.   will contain more functions in future releases.
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #if !defined( __XMATH_H )
  12. #define __XMATH_H
  13. #if !defined( __VECLIB_H )
  14.    #include <VecLib.h>
  15. #endif
  16.  
  17. #if defined __FLAT__ || defined _WIN32
  18.     #define VF_tabsz2 4096
  19.     #define VD_tabsz2 4096
  20.     #define VE_tabsz2 4096
  21.     #define VF_log2tabsz2 12
  22.     #define VD_log2tabsz2 12
  23.     #define VE_log2tabsz2 12
  24.     #define VF_tabsz3   720
  25.     #define VD_tabsz3   720
  26.     #define VE_tabsz3   720
  27. #else  /* 16-bit models */
  28.     #define VF_tabsz2 2048
  29.     #define VD_tabsz2 1024
  30.     #define VE_tabsz2 1024
  31.     #define VF_log2tabsz2 11
  32.     #define VD_log2tabsz2 10
  33.     #define VE_log2tabsz2 10
  34.     #define VF_tabsz3  360
  35.     #define VD_tabsz3  180
  36.     #define VE_tabsz3  180
  37. #endif
  38. #ifdef __BORLANDC__
  39.     #define _VCDAT _cdecl
  40. #else
  41.     #define _VCDAT
  42. #endif
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. extern float    _VCDAT _VFAR   VF_sintab2[ VF_tabsz2+1 ];
  49. extern float    _VCDAT _VFAR   VF_sintab3[ VF_tabsz3+1 ];
  50. extern float    _VCDAT _VFAR   VF_tantab2[ VF_tabsz2+1 ];
  51. extern float    _VCDAT _VFAR   VF_tantab3[ VF_tabsz3+1 ];
  52. extern float    _VCDAT _VFAR   VF_cosectab2[ VF_tabsz2+1 ];
  53. extern float    _VCDAT _VFAR   VF_cosectab3[ VF_tabsz3+1 ];
  54. extern double   _VCDAT _VFAR   VD_sintab2[ VD_tabsz2+1 ];
  55. extern double   _VCDAT _VFAR   VD_sintab3[ VD_tabsz3+1 ];
  56. extern double   _VCDAT _VFAR   VD_tantab2[ VD_tabsz2+1 ];
  57. extern double   _VCDAT _VFAR   VD_tantab3[ VD_tabsz3+1 ];
  58. extern double   _VCDAT _VFAR   VD_cosectab2[ VD_tabsz2+1 ];
  59. extern double   _VCDAT _VFAR   VD_cosectab3[ VD_tabsz3+1 ];
  60. #ifdef __BORLANDC__  /* only Borland C++ support 80-bit reals */
  61. extern extended _VCDAT _VFAR   VE_sintab2[ VE_tabsz2+1 ];
  62. extern extended _VCDAT _VFAR   VE_sintab3[ VE_tabsz3+1 ];
  63. extern extended _VCDAT _VFAR   VE_tantab2[ VE_tabsz2+1 ];
  64. extern extended _VCDAT _VFAR   VE_tantab3[ VE_tabsz3+1 ];
  65. extern extended _VCDAT _VFAR   VE_cosectab2[ VE_tabsz2+1 ];
  66. extern extended _VCDAT _VFAR   VE_cosectab3[ VE_tabsz3+1 ];
  67. extended    __vf  log2l( extended x );
  68. #else
  69.     #ifdef _MSC_VER
  70.        #define log2l log2
  71.     #endif
  72. #endif
  73. #if defined __BORLANDC__ || defined _MSC_VER
  74.     double      __vf  log2( double x );
  75. #endif   /* Optima++ has log2 already built in */
  76.  
  77. int         __vf  isint( double x );
  78. int         __vf  isintl( extended x );
  79. #define           iseven( x )  !(x & 1)    /* for all integer types */
  80. #define           sispositive( x )  !(x & HIBITS)  /* for short int */
  81. #define           ispositive( x )   !(x & HIBITI)  /* for int */
  82. #define           lispositive( x )  !(x & HIBITL)  /* for long int */
  83.  
  84.  
  85. #ifdef __cplusplus
  86. }
  87. #endif
  88. #endif /* __XMATH_H */
  89.